import ArrayStack from "./02_实现栈结构Stack(重构)"

function isValid(s:string):Boolean{
    const stack = new ArrayStack<string>()
    for(let i = 0; i < s.length; i++){
        const c = s[i];
        //每看到一个左括号，就向栈中push一个对应的右括号
        //如果匹配到的不是左括号，就取到对应数据和栈顶对比，查看是否相同，不相同则直接返回false
        
        switch (c){
            case '(':
              stack.push(')')
              break;
            case '{':
              stack.push('}')
              break;
            case '[':
              stack.push(']')
              break;
            default:
              if(c !== stack.pop()) return false;
              break;
        }
    }
    //如果循环走完，再判断栈中是否还有数据，有则说明有多余的左括号，如果栈中无数据，则说明每个左括号都有对应的右括号与之对应
    return stack.isEmpty()
}

console.log(isValid('({})'))

console.log(isValid('({}'))
console.log(isValid('({})'))